home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
-
-
-
- TITLE: How to Cure the Dreaded "LOCKED KEYBOARD" Condition.
- An Installation and User's Guide for the NMIEXIT program.
-
- *************************************************************************
- *************************************************************************
- ** **
- ** The NMIEXIT program and this documentation may be used, copied and **
- ** shared without fee under the following conditions: **
- ** **
- ** . You may not sell or distribute these materials for profit. **
- ** **
- ** . These materials are provided on an "as is" basis. **
- ** No warranty is expressed or implied. **
- ** **
- ** . The author assumes no responsibility for any damages that may **
- ** occur as a result of using these materials. **
- ** **
- ** **
- ** . The author will attempt to answer any written questions **
- ** concerning these materials. **
- ** **
- ** . If you use these materials and find then useful, **
- ** You may send a $20. contribution to: **
- ** **
- ** JACKSON SOFTWARE **
- ** 1729 Mayflower Dr. **
- ** Carrollton, Tx 75007 **
- ** **
- *************************************************************************
- *************************************************************************
-
- INTRODUCTION:
-
- Ah yes, here we are trying to debug that new program that is going to
- sell a million copies and ARGGGG, the keyboard just locked up. Well
- its out there some where looping out of control with all the
- interrupts turned off. If you could just look at that last file
- buffer, or examine a key location for clues. But alas no, its power
- off, power on, and start single stepping. Perhaps your not a
- programmer, but have just purchased a wonderful new integrated
- spreadsheet and calorie counting package. Each time you try to compute
- the bottom line on your dinner menu it locks up. If only Alt-Ctrl-Del
- would work.
-
- Well have I got good news for you. For the price of a simple push
- button switch, a very minor hardware modification to your IBM PC and
- the NMIEXIT program, your prayers are answered.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- HOW DOES IT WORK
-
- The NMIEXIT program takes advantage of a special line on the 8088
- called the Non-Maskable Interrupt line. It is, as the name implies,
- non-maskable by normal software. This line appears on the IBM PC bus
- at pin A1 on every card in the IBM PC. This line is normally used by
- memory boards to signal another dreaded condition, the PARITY CHECK.
- In most other respects the NMI behaves much the same as any other 8088
- interrupt. It has a vector at location 0000:0008 which normally points
- to a routine in BIOS that simply prints out the dreaded "PARITY CHECK"
- message and halts the machine.
-
- A push button switch may be wired from pin A1 of any PC board to
- ground. Pushing the switch will then simulate the parity check
- condition and the PC will go running off to the BIOS NMI routine,
- print out the "PARITY CHECK" message and halt. What good is that you
- ask? Well not much, but that is where the NMIEXIT program comes into
- play. Before you invoke the program that is giving you trouble, issue
- the NMIEXIT command. The command requires one operand, the name of any
- DOS com type program. NMIEXIT makes itself resident along with the com
- program you supplied as an argument. The NMI vector is altered to
- point to the NMIEXIT program.
-
- Now you invoke your program and the keyboard locks up, simply push the
- button. The NMIEXIT program gets control. It first cleans house a
- little so that the display and keyboard are usable again. Next NMIEXIT
- displays all of the registers and flags as they were at the time the
- button was pushed. The com program that you provided as an operand to
- the command is now given control. If that program happened to be
- DEBUG.COM you are now in fat city. Display that buffer, dump that
- stack, look at those counters, and maybe you will find the clue.
-
- The ability to specify any DOS com type program to NMIEXIT is
- extremely flexible. For the non-programmer we talked about earlier who
- only wanted to get his machine restarted, I have provided REBOOT.COM.
- This simple program simply jumps to the restart vector. You should
- never have to power off your machine again.
-
- However, even this wonderful scheme has a weak spot. What if the rouge
- program wipes out NMIEXIT or the copy of DEBUG you made resident?
- There is a last resort, not pleasant though. For that last resort case
- I have provided CASBAS.COM. A routine that gets you to cassette BASIC.
- Since cassette BASIC is in rom it can not get wiped out. Now you can
- PEEK, MID$ and HEX$ yourself up a little dump routine to look at the
- remains of your problem program.
-
- The DOS com program that you specify as an operand to the NMIEXIT
- command must contain a drive identifier and a path specification if
- they are other that the default. The extension COM must also be
- included.
-
- EXAMPLE:
-
- NMIEXIT C:\DEBUG.COM
-
- Oh yes, it only runs under DOS 2.0 or 2.1. DOS 1.1 users, upgrade. I
- do not know if NMIEXIT will work on any IBM compatible. I have tested
- it only on IBM PC and IBM PC-XT.
-
-
-
-
-
-
-
-
- NOTES ON INSTALLING THE PUSH BUTTON
-
- The installation of the push button is a simple task for anyone with
- even the most basic electrical and mechanical skills. However if you
- have never had a soldering iron in your hands, enlist the aid of a
- friend who has.
-
- Here is a list of the stuff you will need:
-
- A push button switch, momentary contact, SPST, normally open
- A box to mount the button in
- A 2 ft. length of single conductor shielded cable
- A short length (several inches) of 30 or 40 GA wire
- An RCA phono jack and female connector that can be mounted on the
- faceplate of one of your PC boards.
-
- All of these items are available at any RADIO SHACK store. Of course
- if you are not into neatness, you can get by with only the button and
- wire.
-
- First mount the button in the box, connect the shielded cable and
- mount the male RCA phono jack to the end of the cable. If you have a
- ohm meter or continuity checker of some kind, it is a good to check
- out the operation of the button at this time.
-
- The next step is to select which board in you PC you are going to
- modify. Since the NMI signal appears on all boards it does not really
- matter which one you chose. However, pick one that has room to mount
- the phono jack.
-
- Remove the faceplate from the board, drill a hole and mount the jack.
- Reinstall the faceplate.
-
- Now lets find pin A1 and the ground pin on the board. Lay the board
- flat on a table with the component side up and the faceplate on your
- right. The A1 pin will be the first pin on the right end of the board
- fingers. The ground pin will be on the other side of the board
- directly opposite the A1 pin. The plated paths will usually run from
- the connector fingers to a row of circular thru connects located just
- above the fingers. Some boards will have etched labels on the board to
- help you locate the pins. The circular thru connects are the best
- place to solder and connect your wires. Use small gauge wire (30 or
- 40) and run a connection from ground to the shell or outside of the
- phono jack. Run the other connection from pin A1 to the center
- terminal on the phono jack. Use solder sparingly on the board.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CHECKING IT OUT
-
- Re-install the board and put everything back together. Do not plug in
- your button yet. Power up the system and watch for smoke (just
- kidding). The machine should power up cleanly. If you get a PARITY
- CHECK error you have shorted the NMI lead (pin A1) to ground
- somewhere. Now plug in your button. If you get a PARITY CHECK then
- there is a short somewhere in the cable or plug. Assuming all is still
- well and your system is up and running, now press the button. You
- should get a PARITY CHECK message and your system will lock up. This
- confirms that your button is doing what it is suppose to. Now re-power
- the system and invoke NMIEXIT specifying DEBUG.COM as an operand.
- Remember to include any drive and path identifiers if required.
- NMIEXIT will give a confirmation message if all went well. Now hit the
- button. The screen will clear and NMIEXIT will display the registers
- and flags at the time the button was hit. At this time you should be
- in DEBUG. Try some of your favorite DEBUG commands. Entering the DEBUG
- "Q" command should return you to DOS.
-
- HAPPY HUNTING.
- END OF TRANSFER - PRESS ENTER TO RETURN TO MENU
- "Q" command should return you to DOS.
-
-